{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 概述"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "把数据存储于普通的column列也能用于数据查询，那使用index有什么好处？\n",
    "\n",
    "index的用途总结：\n",
    "* 1、更方便的数据查询\n",
    "* 2、使用index可以获得性能提升\n",
    "* 3、自动的数据对齐功能\n",
    "* 4、更多更强大的数据结构支持"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 读取数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "df = pd.read_csv('./datas/ratings.csv')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>userId</th>\n",
       "      <th>movieId</th>\n",
       "      <th>rating</th>\n",
       "      <th>timestamp</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>4.0</td>\n",
       "      <td>964982703</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>4.0</td>\n",
       "      <td>964981247</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>4.0</td>\n",
       "      <td>964982224</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>47</td>\n",
       "      <td>5.0</td>\n",
       "      <td>964983815</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>50</td>\n",
       "      <td>5.0</td>\n",
       "      <td>964982931</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   userId  movieId  rating  timestamp\n",
       "0       1        1     4.0  964982703\n",
       "1       1        3     4.0  964981247\n",
       "2       1        6     4.0  964982224\n",
       "3       1       47     5.0  964983815\n",
       "4       1       50     5.0  964982931"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "userId       100836\n",
       "movieId      100836\n",
       "rating       100836\n",
       "timestamp    100836\n",
       "dtype: int64"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.count()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 使用index查询数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "# drop=False，让索引列还保持在column\n",
    "df.set_index('userId',inplace=True,drop=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>userId</th>\n",
       "      <th>movieId</th>\n",
       "      <th>rating</th>\n",
       "      <th>timestamp</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>userId</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>4.0</td>\n",
       "      <td>964982703</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>4.0</td>\n",
       "      <td>964981247</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>6</td>\n",
       "      <td>4.0</td>\n",
       "      <td>964982224</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>47</td>\n",
       "      <td>5.0</td>\n",
       "      <td>964983815</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>50</td>\n",
       "      <td>5.0</td>\n",
       "      <td>964982931</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        userId  movieId  rating  timestamp\n",
       "userId                                    \n",
       "1            1        1     4.0  964982703\n",
       "1            1        3     4.0  964981247\n",
       "1            1        6     4.0  964982224\n",
       "1            1       47     5.0  964983815\n",
       "1            1       50     5.0  964982931"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Int64Index([  1,   1,   1,   1,   1,   1,   1,   1,   1,   1,\n",
       "            ...\n",
       "            610, 610, 610, 610, 610, 610, 610, 610, 610, 610],\n",
       "           dtype='int64', name='userId', length=100836)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.index"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>userId</th>\n",
       "      <th>movieId</th>\n",
       "      <th>rating</th>\n",
       "      <th>timestamp</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>userId</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>500</th>\n",
       "      <td>500</td>\n",
       "      <td>1</td>\n",
       "      <td>4.0</td>\n",
       "      <td>1005527755</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>500</th>\n",
       "      <td>500</td>\n",
       "      <td>11</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1005528017</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>500</th>\n",
       "      <td>500</td>\n",
       "      <td>39</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1005527926</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>500</th>\n",
       "      <td>500</td>\n",
       "      <td>101</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1005527980</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>500</th>\n",
       "      <td>500</td>\n",
       "      <td>104</td>\n",
       "      <td>4.0</td>\n",
       "      <td>1005528065</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        userId  movieId  rating   timestamp\n",
       "userId                                     \n",
       "500        500        1     4.0  1005527755\n",
       "500        500       11     1.0  1005528017\n",
       "500        500       39     1.0  1005527926\n",
       "500        500      101     1.0  1005527980\n",
       "500        500      104     4.0  1005528065"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 使用column的condition的查询方法\n",
    "df.loc[df['userId']==500].head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>userId</th>\n",
       "      <th>movieId</th>\n",
       "      <th>rating</th>\n",
       "      <th>timestamp</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>userId</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>500</th>\n",
       "      <td>500</td>\n",
       "      <td>1</td>\n",
       "      <td>4.0</td>\n",
       "      <td>1005527755</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>500</th>\n",
       "      <td>500</td>\n",
       "      <td>11</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1005528017</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>500</th>\n",
       "      <td>500</td>\n",
       "      <td>39</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1005527926</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>500</th>\n",
       "      <td>500</td>\n",
       "      <td>101</td>\n",
       "      <td>1.0</td>\n",
       "      <td>1005527980</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>500</th>\n",
       "      <td>500</td>\n",
       "      <td>104</td>\n",
       "      <td>4.0</td>\n",
       "      <td>1005528065</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        userId  movieId  rating   timestamp\n",
       "userId                                     \n",
       "500        500        1     4.0  1005527755\n",
       "500        500       11     1.0  1005528017\n",
       "500        500       39     1.0  1005527926\n",
       "500        500      101     1.0  1005527980\n",
       "500        500      104     4.0  1005528065"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 使用index的查询方法\n",
    "df.loc[500].head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 使用index会提升性能\n",
    "* 如果index是唯一的，Pandas会使用哈希表优化，查询性能为O(1)\n",
    "* 如果index不是唯一的，但是有序，Pandas会使用二分查找算法，查询性能为O(logN)\n",
    "* 如果index是完全随机的，那么每次查询都要扫描全表，查询性能为O(N)"
   ]
  },
  {
   "attachments": {
    "image.png": {
     "image/png": "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PR6xwuIKeIYJko4fMwk8Obq3R48e+P3vf4+//OUvoeqgR2vAgAGYOHGiWhpUv+wJpDo4PWf6Ze48x3jhn3VavSd4Om3q89oe93V1dSHYIIDQpi6Pjheejz6v7XGvz9GG0yavhafX8XVe+jP3sQSdl47Lz85ztBspTx1f73W88PvW1/V9OG3pY73Xcbn/7LPP1A8NehN10OXSZdTpCI9Nzc5AcCV4/vLLL9rMAXva4abt8x4Y9Odox7zGZ5PgyVkimFan5zWnXWUHDZ57fmZgPvpe6k+FzvNAwNOpihybVCCbwVPpaPth2fUraShvp4CnyecrXlsCnvEq5sH4mQie//rXv/DHP/5RzalJmAkHT1YDX/xjx47FxRdfrNaq//rrrxutV3/llVeq9aMnT56MSy+9FA888AA2bdoUAg0NNho8uGcTOZvKaVtff/nll/H222+rmt+5cycuu+wy5aH7z3/+g7PPPhvPP/88OLm5DizT448/HoIMgizLwHQPPvigGuzFdMuWLVNJ5s+fj5tvvlnBp7Yxe/an+Otf/6o/Kls//vijmrv1ggsuQG5urppIPRShmQPe94UXXthoeTdO38Om4x07dqh7HTlyJG6//Xb8+uuvuOmmm3D11VeDmmpYoh6cwJ1lPf/883H33XeDZdKBdcR7ZzqW/bvvvmuk9Z///GfQwzl+/HiV/rXXXkPXrl1xxBFHKG8256SdN2+eMkfAfO+993DFFVfgqquuUuXgc0CvI8vj8/nUwgms17///e9qKqLDDjusSfBkWt4/0zN8/vnnuP/++7FixQrce++96vmYOXNmo+eHUxvxb+uSSy7BQw89pOYRPeiggxR4ak1Y76x/2tbaaT3eeust3HHHHaF64o+aF198EQ8//HCjutbPn4CnVk72phXILvB0eDD5Y89fiT2/fICa3xbDtisdS7hp+HTEj0N4fq/H0ooSh8msiSrgmQFVHRd48pefrxyWrxSWbxcs305YtXuSu/n2qcUdLb12YxTNtcfz448/VjBJ8GCIBJ582ffr108ByquvvopTTjkF06ZNC4HSySefrMDwySefxOzZs3Hdddep+Hv37lNxNFjqFz/zufPOO/Hss8+GwJMAynPPPfecKgf7zJ544okKIocNG4aZM/+L0047TUGY7mP72GOPKWCiXaZ/6aWX0KVLF4wbN05t5513Hlq1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"
    }
   },
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "![image.png](attachment:image.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 实验1:完全随机的顺序查询"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 将数据随机打散\n",
    "from sklearn.utils import shuffle\n",
    "df_shuffle = shuffle(df)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>userId</th>\n",
       "      <th>movieId</th>\n",
       "      <th>rating</th>\n",
       "      <th>timestamp</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>userId</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>64</th>\n",
       "      <td>64</td>\n",
       "      <td>1517</td>\n",
       "      <td>4.0</td>\n",
       "      <td>1161520656</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>414</th>\n",
       "      <td>414</td>\n",
       "      <td>2763</td>\n",
       "      <td>2.0</td>\n",
       "      <td>961437096</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>181</th>\n",
       "      <td>181</td>\n",
       "      <td>61</td>\n",
       "      <td>4.0</td>\n",
       "      <td>845472115</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>577</th>\n",
       "      <td>577</td>\n",
       "      <td>593</td>\n",
       "      <td>4.0</td>\n",
       "      <td>945966689</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>414</th>\n",
       "      <td>414</td>\n",
       "      <td>3997</td>\n",
       "      <td>2.0</td>\n",
       "      <td>992878701</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        userId  movieId  rating   timestamp\n",
       "userId                                     \n",
       "64          64     1517     4.0  1161520656\n",
       "414        414     2763     2.0   961437096\n",
       "181        181       61     4.0   845472115\n",
       "577        577      593     4.0   945966689\n",
       "414        414     3997     2.0   992878701"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_shuffle.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "False"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 索引是否是递增的\n",
    "df_shuffle.index.is_monotonic_increasing"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "False"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 索引是否是唯一的\n",
    "df_shuffle.index.is_unique"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "353 µs ± 8.73 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)\n"
     ]
    }
   ],
   "source": [
    "# 计时，查询id=500数据性能\n",
    "%timeit df_shuffle.loc[500]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 将index排序后的查询"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "df_sorted = df_shuffle.sort_index()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>userId</th>\n",
       "      <th>movieId</th>\n",
       "      <th>rating</th>\n",
       "      <th>timestamp</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>userId</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1256</td>\n",
       "      <td>5.0</td>\n",
       "      <td>964981442</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>1408</td>\n",
       "      <td>3.0</td>\n",
       "      <td>964982310</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>2997</td>\n",
       "      <td>4.0</td>\n",
       "      <td>964980896</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>3809</td>\n",
       "      <td>4.0</td>\n",
       "      <td>964981220</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>356</td>\n",
       "      <td>4.0</td>\n",
       "      <td>964980962</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        userId  movieId  rating  timestamp\n",
       "userId                                    \n",
       "1            1     1256     5.0  964981442\n",
       "1            1     1408     3.0  964982310\n",
       "1            1     2997     4.0  964980896\n",
       "1            1     3809     4.0  964981220\n",
       "1            1      356     4.0  964980962"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_sorted.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 索引是否是递增的\n",
    "df_sorted.index.is_monotonic_increasing"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "False"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 索引是否是唯一的\n",
    "df_sorted.index.is_unique"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "190 µs ± 7.02 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)\n"
     ]
    }
   ],
   "source": [
    "# 计时，查询id=500数据性能\n",
    "%timeit df_sorted.loc[500]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 使用index能自动对齐数据\n",
    "包括series和datgaFrame"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "s1 = pd.Series([1,2,3],index= list('abc'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "a    1\n",
       "b    2\n",
       "c    3\n",
       "dtype: int64"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "s1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "s2 = pd.Series([2,3,4],index=list('bcd'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "b    2\n",
       "c    3\n",
       "d    4\n",
       "dtype: int64"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "s2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "a    NaN\n",
       "b    4.0\n",
       "c    6.0\n",
       "d    NaN\n",
       "dtype: float64"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "s1+s2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 使用index更多更强大的数据结构支持"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "***很多欠打的索引数据结构***\n",
    "\n",
    "* CategoricallIndex,基于分类数据的Index,提升性能\n",
    "* MulltiIndex,多维索引，用于groupby多维聚合后结果等\n",
    "* DatatimeIndex,时间类型索引，强大的日期和时间的方法支持"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.2"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
